1.J遍历树路径距离(bfs).cpp

#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,d;cin>>n>>d;
	vector<vector<int>> adj_list(n+1);//邻接表创图(树)
	for(int i = 0;i<n-1;i++){
		int u,v;
		cin>>u>>v;
		adj_list[u].push_back(v);
		adj_list[v].push_back(u);
	}
	//初始化为-1表示未访问
	vector<int> distance(n+1,-1);//表示由1到其他n个点包括自己的距离
	distance[1] = 0;
	queue<int> q;
	q.push(1);
	while(!q.empty()){
		int cur = q.front();
		q.pop();
		for(int neighbor:adj_list[cur]){
			if(distance[neighbor]==-1){
				distance[neighbor] = distance[cur]+1;
				q.push(neighbor);
			}
		}
	}
	int ans = 0;
	for(int i = 2;i<=n;i++){
		if(distance[i]<d&&distance[i]!=-1){
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}